package com.emeraldparser.util;

import java.util.Collection;

public abstract class ForwardingGraph<V, E> implements Graph<V, E> {

	public abstract Graph<V, E> delegate();

	@Override
	public Collection<V> vertices() {
		return delegate().vertices();
	}

	@Override
	public Collection<E> edgeLabels() {
		return delegate().edgeLabels();
	}

	@Override
	public Collection<Edge<V, E>> edges() {
		return delegate().edges();
	}

	@Override
	public Collection<Edge<V, E>> edges(V vertex) {
		return delegate().edges(vertex);
	}

	@Override
	public Collection<Edge<V, E>> edges(V source, V destination) {
		return delegate().edges(source, destination);
	}

	@Override
	public Collection<Edge<V, E>> inboundEdges(V vertex) {
		return delegate().inboundEdges(vertex);
	}

	@Override
	public Collection<Edge<V, E>> outboundEdges(V vertex) {
		return delegate().outboundEdges(vertex);
	}

	@Override
	public Collection<V> predecessors(V vertex) {
		return delegate().predecessors(vertex);
	}

	@Override
	public Collection<V> successors(V vertex) {
		return delegate().successors(vertex);
	}

	@Override
	public Collection<V> predecessors(V vertex, E edgeLabel) {
		return delegate().predecessors(vertex, edgeLabel);
	}

	@Override
	public Collection<V> successors(V vertex, E edgeLabel) {
		return delegate().successors(vertex, edgeLabel);
	}

	@Override
	public boolean addDirectedEdge(V source, V destination, E edgeLabel) {
		return delegate().addDirectedEdge(source, destination, edgeLabel);
	}

	@Override
	public boolean addUndirectedEdge(V source, V destination, E edgeLabel) {
		return delegate().addUndirectedEdge(source, destination, edgeLabel);
	}

	@Override
	public boolean addVertex(V vertex) {
		return delegate().addVertex(vertex);
	}

	@Override
	public boolean containsVertex(Object o) {
		return delegate().containsVertex(o);
	}

	@Override
	public boolean containsEdge(Edge<?, ?> edge) {
		return delegate().containsEdge(edge);
	}

	@Override
	public boolean addAll(Graph<? extends V, ? extends E> graph) {
		return delegate().addAll(graph);
	}

	@Override
	public Collection<E> inboundEdgeLabels(V vertex) {
		return delegate().inboundEdgeLabels(vertex);
	}

	@Override
	public Collection<E> outboundEdgeLabels(V vertex) {
		return delegate().outboundEdgeLabels(vertex);
	}

	@Override
	public Collection<Edge<V, E>> outboundEdges(V vertex, E edgeLabel) {
		return delegate().outboundEdges(vertex, edgeLabel);
	}

	@Override
	public Collection<Edge<V, E>> inboundEdges(V vertex, E edgeLabel) {
		return delegate().inboundEdges(vertex, edgeLabel);
	}

	@Override
	public boolean addEdge(Edge<V, E> edge) {
		return delegate().addEdge(edge);
	}

}
